const path = require('path')
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
const TerserPlugin = require('terser-webpack-plugin')
// const openInEditor = require('launch-editor-middleware')

function resolve (dir) {
  return path.join(__dirname, dir)
}
module.exports = {
  lintOnSave: true, // 设置是否在开发环境下每次保存代码时都启用 eslint验证。
  productionSourceMap: false, // 设为false，不会生成map文件，可减少包大小，加密源码
  publicPath: process.env.BASE_URL || '/',
  configureWebpack: config => {
    // 配置代码压缩
    if (process.env.NODE_ENV === 'production' && !process.env.NO_MINIMIZE) {
      config.plugins.push(
        // 生产环境自动删除console
        new TerserPlugin({
          extractComments: false, // 不提取LICENSE等文件
          sourceMap: false,
          parallel: true,
          terserOptions: {
            warnings: false,
            compress: {
              drop_debugger: true,
              drop_console: true
            }
          }
        })
      )
    }
  },
  chainWebpack: config => {
    // 移除 prefetch 插件 //预加载
    config.plugins.delete('prefetch')
    // 移除 preload 插件
    config.plugins.delete('preload')
    // 增加打包分析
    if (process.env.IS_ANALYZ) {
      config.plugin('webpack-report')
        .use(BundleAnalyzerPlugin, [{
          analyzerMode: 'static'
        }])
    }
    const svgRule = config.module.rule('svg')
    svgRule.uses.clear()
    svgRule.test(/\.svg$/)
      .include
      .add(resolve('src/components/icons/svg'))
      .end()
      .use('svg-sprite-loader')
      .loader('svg-sprite-loader')
      .options({
        symbolId: 'icon-[name]'
      })
    // 设置一些别名
    config.resolve.alias.set('@', resolve('./src'))
  },
  devServer: {
    // before (app) {
    //   app.use('/__open-in-editor', openInEditor(''))
    // },
    // open: true, // 配置自动启动浏览器
    // host: 'localhost', // target host
    port: 3000,
    proxy: {
      '/api': {
        target: 'http://120.48.119.105:9000', // 请求开发服务器
        // target: 'http://localhost:9000', // 请求本地服务器 本地ip
        ws: false,
        changeOrigin: true
        // pathRewrite: {
        //   '^/api': '/'
        // }
      }
    }
  }
}
